package resp

import (
	"fly/models"
)

type AirportResp struct {
	models.Airport
	BaseModelResp
	AirportName string `json:"airportName" description:"机场类型名称"`
}

// ExperienceResp 任务经历响应
type ExperienceResp struct {
	Id         int64  `json:"id" description:"id"`
	AircraftId int64  `json:"aircraftId" description:"飞机id"`
	DictId     int64  `json:"dictId" description:"字典id"`
	DicCode    string `json:"dicCode" description:"编码" `
	DicKey     string `json:"dicKey" description:"key" `
	DicValue   string `json:"dicValue" description:"值" `
	Count      int    `json:"count" description:"次数"`
}

type AircraftResp struct {
	models.Aircraft
	BaseModelResp
	AircraftName         string                   `json:"aircraftName" description:"飞机名"`
	StateName            string                   `json:"stateName" description:"飞机状态名"`
	Status               int                      `json:"status" description:"状态"`
	IsFlightPool         bool                     `json:"isFlightPool" description:"是否在飞行池中"`
	DeptName             string                   `json:"deptName" description:"飞机所属部门"`
	FlightTasks          []*FlightTaskSimpleResp  `json:"flightTasks" description:"安排的未完成的任务列表"`
	LifetimeRemindStatus int                      `json:"lifetimeRemindStatus" description:"有寿保养状态，返回需要保存组件类型，默认为0"`
	Experiences          []*ExperienceResp        `json:"experiences" description:"飞机经历"`
	BindComponents       []*AircraftComponentResp `json:"bindComponents" description:"飞机下直接绑定的组件列表"`
	Components           []*AircraftComponentResp `json:"components" description:"飞机下的组件列表"`
}

type IdName struct {
	Id   int64  `json:"id" description:"id"`
	Name string `json:"name" description:"名称"`
	Code string `json:"code" description:"code"`
}

type RecommendAircraftResp struct {
	TaskCode string    `json:"taskCode" description:"任务编号"`
	List     []*IdName `json:"list" description:"推荐飞机列表"`
}

type SimpleAirport struct {
	Id       int64  `json:"id" description:"id"`
	Name     string `description:"机场名" json:"name"`
	Province string `description:"省份名" json:"province"`
	TypeName string `description:"机场类型对应字典Id" json:"typeName"`
}

type SimpleAircraft struct {
	Id        int64  `json:"id" description:"id"`
	Code      string `description:"飞机编号" json:"code"`
	DeptId    int64  `description:"所属部门" json:"deptId"`
	DeptName  string `description:"所属部门" json:"deptName"`
	TypeName  string `description:"飞机类型对应字典Id" json:"typeName"`
	StateName string `description:"飞机状态对应字典Id" json:"stateName"`
}

type FlightTaskSimpleResp struct {
	Id                int64  `json:"id" description:"id"`
	Code              string `description:"飞机编号" json:"code"`
	Status            int    `description:"状态" json:"status"`
	PlanStart         int64  `description:"计划开始时间" json:"planStart"`
	PlanEnd           int64  `description:"计划结束时间" json:"planEnd"`
	PlanDuration      int    `description:"计划时长秒)" json:"planDuration"`
	ActualDuration    int    `description:"实际时长秒)" json:"actualDuration"`
	PlanUpDownCount   int    `description:"计划起落次数" json:"planUpDownCount"`
	ActualUpDownCount int    `description:"实际起落次数" json:"actualUpDownCount"`
	TaskSceneId       int64  `description:"任务场景字典Id" json:"taskSceneId"`
	TaskTypeId        int64  `description:"任务类型字典Id" json:"taskTypeId"`
	TargetAirportId   int64  `description:"目标机场Id" json:"targetAirportId"`
	AircraftId        int64  `description:"飞机Id" json:"aircraftId"`
	PilotName         string `description:"飞行员名字" json:"pilotName"`
}

type FlightTaskResp struct {
	models.FlightTask
	BaseModelResp
	TaskTypeName    string                   `json:"taskTypeName" description:"任务类型"`
	TaskSceneName   string                   `json:"taskSceneName" description:"任务场景"`
	TargetAirport   *SimpleAirport           `json:"targetAirport" description:"目标机场"`
	Aircraft        *SimpleAircraft          `json:"aircraft" description:"飞机"`
	LifetimeRecords []*LifetimeRecordResp    `json:"lifetimeRecords" description:"添加的组件有寿记录"`
	Components      []*AircraftComponentResp `json:"components" description:"飞机下的组件列表"`
}

type ProvinceCount struct {
	Count        int    `json:"count" description:"count"`
	Province     string `json:"province" description:"省份"`
	ProvinceCode string `json:"provinceCode" description:"省份code"`
}

type AircraftComponentResp struct {
	models.AircraftComponent
	BaseModelResp
	DeptName  string `description:"所属部门" json:"deptName"`
	StateName string `description:"状态对应字典" json:"stateName"`
}

// LifetimeRecordResp 有寿维护响应
type LifetimeRecordResp struct {
	BaseModelResp
	Id               int64  `json:"id" description:"id"`
	Type             int    `json:"type" description:"维护任务类型：1-机体A检，2-发动机维护，3-起落架，4-APU，5-液压软管"`
	AdjustType       int    `json:"adjustType" description:"调整类型"`
	AdjustTypeName   string `json:"adjustTypeName" description:"调整类型名称"`
	AircraftId       int64  `json:"aircraftId" description:"飞机Id"`
	AircraftCode     string `json:"aircraftCode" description:"飞机编号"`
	ComponentId      int64  `json:"componentId" description:"飞机组件Id"`
	TaskId           int64  `json:"taskId" description:"任务Id"`
	ComponentType    int    `json:"componentType"  description:"飞机组件类型：1-发动机1，2-发动机2，3-发动机3，4-发动机4，5-机体，6-起落架，7-APU，8-液压软管1，9-液压软管2"`
	ComponentName    string `json:"componentName" description:"飞机组件名称"`
	LatestFlightTime int64  `json:"latestFlightTime" description:"最新飞行时间"`
	WorkCount        int    `json:"workCount" description:"当前工作次数"`
	IntervalCount    int    `json:"intervalCount" description:"下次保养间隔次数"`
	WorkDuration     int    `json:"workDuration" description:"当前工作时长:秒"`
	IntervalDuration int    `json:"intervalDuration" description:"下次保养间隔时长:秒"`
	RecordCount      int    `json:"recordCount" description:"保养记录条数"`
}

type AircraftLocationResp struct {
	models.AircraftLocation
	BaseModelResp
}
